package cc.jq1024.domain.rebate.repository;

import cc.jq1024.domain.rebate.model.aggregate.BehaviorRebateAggregate;
import cc.jq1024.domain.rebate.model.entity.BehaviorRebateOrderEntity;
import cc.jq1024.domain.rebate.model.valobj.BehaviorTypeVO;
import cc.jq1024.domain.rebate.model.valobj.DailyBehaviorRebateVO;

import java.util.List;

/**
 * @Author: jia-qiang ljq1024.cc
 * @desc: 用户返利仓储
 * @Date: 2024-06-29-23:41
 */
public interface IBehaviorRebateRepository {
    /**
     * 存储聚合对象数据
     *
     * @param userId                   用户ID - DbRouter分片键
     * @param behaviorRebateAggregates 行为返利聚合对象 - 集合
     */
    void saveUserRebateRecord(String userId, List<BehaviorRebateAggregate> behaviorRebateAggregates);

    /**
     * 查询返利配置
     *
     * @param behaviorTypeVO 行为类型 - 枚举
     * @return 返利配置的集合
     */
    List<DailyBehaviorRebateVO> queryDailyBehaviorRebateConfig(BehaviorTypeVO behaviorTypeVO);

    /**
     * 根据外部单号查询订单
     *
     * @param userId        用户ID
     * @param outBusinessNo 业务ID；签到则是日期字符串，支付则是外部的业务ID
     * @return 返利订单实体
     */
    List<BehaviorRebateOrderEntity> queryOrderByOutBusinessNo(String userId, String outBusinessNo);
}
